爬虫篇(9)Fiddler抓包请求一键转换成python代码 您所在的位置:网站首页 fiddler 重发 爬虫篇(9)Fiddler抓包请求一键转换成python代码

爬虫篇(9)Fiddler抓包请求一键转换成python代码

2023-09-09 22:01| 来源: 网络整理| 查看: 265

前言:前段时间由于需求,用Fiddler各种抓包,各种分析,主要是测试请求时添加cookie、添加请求头、添加url, 虽然前面有一键转换cookie/headers的工具(可以看我前面博客),但还是有些烦琐。 想着能不能将Fiddler抓到的请求一键转换成Python代码,但是在网上找了一下,无果(有知道的同学可以评论留言,十分感谢), 于是决定自己写一个能将Fiddler一键转换成Python代码的Python代码。

话不多说,上代码(如果觉得有更好的优化方案请联系我修改):

#!/usr/bin/python # -*- coding: UTF-8 -*- str_filename = "2.txt" # save_name = "re_test.py" save_name = str_filename.replace("txt", "py") class FidToPy(): def __init__(self, str_name, sa_name): self.str_filename = str_name self.save_name = sa_name self.text = "" self.url_list = [] self.headers = {} self.cookies = {} self.data = {} def get_url(self): infos = self.text.split("\n")[0] self.url_list = [infos.split(" ")[0], infos.split(" ")[1]] def get_headers(self): infos = self.text.split("\n")[1:] info = "" for i in infos: if "Cookie: " in i: break info += i + "\n" headers = info.split("\n") while "" in headers: headers.remove("") for i in headers: if ": " not in i: break self.headers[i.split(": ")[0]] = i.split(": ")[1] def get_cookies(self): infos = self.text.split("\n")[1:] cookies_flag = 0 for i in infos: if "Cookie: " in i: self.cookies = i.replace("Cookie: ", "") print(self.cookies ) cookies_flag = 1 break if cookies_flag==1: self.cookies = {i.split("=")[0]: i.split("=")[1] for i in self.cookies.split("; ")} def get_data(self): try: infos = self.text.split("\n") for i in range(2, len(infos)): if infos[i - 1] == "" and "HTTP" in infos[i + 1]: self.data = infos[i] break self.data = {i.split("=")[0]: i.split("=")[1] for i in self.data.split("&")} except: pass def get_req(self): info_beg = "#!/usr/bin/python\n# -*- coding: UTF-8 -*-\nimport requests\n\n" info_url = "url = \'{}\'\n".format(self.url_list[1]) info_headers = "headers = {}\n".format(self.headers) info_cookies = "cookies = {}\n".format(self.cookies) info_data = "data = {}\n\n".format(self.data) if "GET" in self.url_list[0]: info_req = "html = requests.get(url, headers=headers, verify=False, cookies=cookies)\n" else: info_req = "html = requests.post(url, headers=headers, verify=False, cookies=cookies, data=data)\n" info_end = "print(len(html.text))\nprint(html.text)\n" text = info_beg + info_url + info_headers + info_cookies + info_data + info_req + info_end with open(save_name, "w+", encoding="utf8") as p: p.write(text) print("转化成功!!") print(save_name, "文件保存!") def read_infos(self): with open(self.str_filename, "r+", encoding="utf-8") as p: old_line = "" for line in p: if old_line == b"\n" and line.encode() == b"\n": break old_line = line.encode() self.text += old_line.decode() # print("self.text:", self.text) def start(self): self.read_infos() self.get_url() self.get_headers() self.get_cookies() self.get_data() print("self.url_list:", self.url_list) print("self.headers:", self.headers) print("self.cookies:", self.cookies) print("self.data:", self.data) self.get_req() if __name__ == '__main__': f = FidToPy(str_filename, save_name) f.start()

使用教程:

首先从Fiddler选中你要转换的请求 -> Save -> Selected Session -> as Text(也可以选择as Text(Header only)...),如图所示:

这样,我们就得到了包含了这个请求的txt文本:

把这个文件移动到和前面Python代码同一个文件夹,然后修改Python中第四行的,改成你请求信息txt文件的名字,如:

str_filename = "15_Full.txt"

右键运行,就可以得到一个同名的.py文件,这个就是我们要的Python请求代码了,so simply!!

效果图:

注:如果是App抓包,post请求中data可能需要加一个解码步骤

 

原创不易,转载请标明出处。

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有